#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSerialPort>
#include <QTimer>
#include <mycombobox.h>
#include <qpushbutton.h>
#include <customthread.h>
#include <qcheckbox.h>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:

    void on_btnSendContext_clicked();//发送文字槽函数

    void _SerialData_readyToRead();//接收文字槽函数

    void on_btnCloseOrOpenSerial_clicked(bool checked);//打开关闭串口

    void on_checkBoxSendIntime_clicked(bool checked);//定时发送

    void on_btnRevClear_clicked();//清空接收区

    void on_btnRevSave_clicked();//保存接收区文本

    void time_reflash();//刷新时间显示

    void on_checkBoxHexShow_clicked(bool checked);//Hex显示

    void on_btnHideTable_clicked(bool checked);//隐藏面板

    void on_btnHideHistory_clicked(bool checked);//隐藏历史

    void refreshSerialName();//刷新串口

    void on_command_button_clicked();//多文本区所有控件命令

    void on_checkBox_send_clicked(bool checked);//多文本所有发送按钮

    void buttons_handler();//循环定时发送

    void on_pushButtonInit_clicked();//多文本重置

    void on_pushButtonSave_clicked();//多文本保存

    void on_pushButtonLoad_clicked();//多文本载入

private:
    Ui::Widget *ui;
    QSerialPort *serialPort;
    QTimer* timer;
    QList<QPushButton*>buttons;
    QTimer* buttonConTimer;
    QList<QLineEdit*>lineEdits;
    QList<QCheckBox*>checkBoxs;

    int buttonIndex;//多文本按钮索引
    int writeCntTotal;//发送总字节数
    int readCntTotal;//接收总字节数
    QString sendBak;//发送备份
    bool serialStatus;
    QString myTime;
    //CustomThread* myThread;


    void getSysTime();

};
#endif // WIDGET_H
